![]() |
![]() ![]() |
![]() |
![]()
Post
#161
|
|
Grupa: Zarejestrowani Postów: 79 Pomógł: 3 Dołączył: 23.12.2008 Skąd: Piaseczno Ostrzeżenie: (0%) ![]() ![]() |
tak zalozmy ze wchodzisz na strone profil.php na ktorej jest link do strony usun_konto.php, parametrem tego linku jest token, teraz po wejsciu na strone usun_konto spr czy token z url jest taki sam jak w sesji, jesli tak to znaczy ze user kliknal na odpowiedni link na odpowiedniej stronie Wymyśliłem sobie coś takiego
no i oczywiście na początku skryptów daję checktoken(); $token=generate_token(); i wklejam ?token={$token} do linków... To chyba lepsze niż moje poprzednie (raczej rzeczywiście beznadziejne) rozwiązanie (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ? Jeżeli to jest OK to będę musiał to dodać w kilku serwisach.... no i chyba przyda się linuchowy sed do pododawania tokena w linkach :-) Ten post edytował mlattari 6.03.2009, 01:34:36 |
|
|
![]()
Post
#162
|
|
Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Nie wiem co robi diee_close() ale jesli nic nie zwraca to moze nie dzialac bo troche nie ma sensu to raz a dwa to jakos kombinujesz ze sklejaniem ciagu i jeszcze nie bedzie on az taki losowy ja 2 dni temu napisac cos takiego jeszcze w praktyce nie uzywalem ale dzialac dziala:
|
|
|
![]()
Post
#163
|
|
Grupa: Zarejestrowani Postów: 79 Pomógł: 3 Dołączył: 23.12.2008 Skąd: Piaseczno Ostrzeżenie: (0%) ![]() ![]() |
No masz racje :-) U mnie jest rzeczywiście mało losowo :-( Chyba będę musiał dodać coś z md5 tak jak u Ciebie. Dzięki za podpowiedź.
|
|
|
![]()
Post
#164
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat no i chyba przyda się linuchowy sed do pododawania tokena w linkach :-) ob_start" title="Zobacz w manualu PHP" target="_manual + preg_replace" title="Zobacz w manualu PHP" target="_manual |
|
|
![]()
Post
#165
|
|
Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
|
|
|
![]()
Post
#166
|
|
Grupa: Zarejestrowani Postów: 79 Pomógł: 3 Dołączył: 23.12.2008 Skąd: Piaseczno Ostrzeżenie: (0%) ![]() ![]() |
Prawdopodobnie można zbuforować zawartość stronki, podmienić określone wyrażenia i zapisać ponownie :-)
|
|
|
![]()
Post
#167
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Tak, jak to robi mechanizm sesyjny dopisując SID w przypadku włączonego rewriter_tags. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
|
|
|
![]()
Post
#168
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 28.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
przejrzałem posty w tym temacie, i ogólnie to wszystkie mówią o trochę bardziej skomplikowanych sytuacjach niż te, z którą ja mam do czynienia tzn:
Strona jest praktycznie statyczna, a php używam tylko do zaincludowania nagłówka i stopki, ale nazwy plików nie pochodzą z posta/geta tylko są zahardcodowane. Czy ciągnie to za sobą jakieś niebezpieczeństwo? Wolę się upewnić. Drugie pytanie, czy mechanizm google search engine może wpłynąć na bezpieczeństwo strony? Uzywam go w ten sposób: Na stroni z wynikami: formatka wyszukiwarki:
|
|
|
![]()
Post
#169
|
|
Grupa: Zarejestrowani Postów: 690 Pomógł: 81 Dołączył: 6.04.2005 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
Czy ciągnie to za sobą jakieś niebezpieczeństwo? Wolę się upewnić. Drugie pytanie, czy mechanizm google search engine może wpłynąć na bezpieczeństwo strony? ad1. poki nie pobierasz niczego z zewnatrz skryptu wsio jest ok ad2. nie - no chyba ze Googla shakuja (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ten post edytował bełdzio 28.03.2009, 23:40:02 |
|
|
![]()
Post
#170
|
|
Grupa: Zarejestrowani Postów: 405 Pomógł: 6 Dołączył: 12.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
Chciałem dowiedzieć się jak zabezpieczać się przed atakami CSRF więc zrobiłem testową aplikację do tego celu:
użytkownik może dodawać i usuwać znajomych oraz pisać komentarze a w nich umieszczać linki. Użytkownik może usunąć ze znajomych użytkownika klikając na link 'usuń' w swoim profilu w znajomych - na końcu linka jest podawany id znajomego do usunięcia: Po kliknięciu w linka, id jest oczywiście zamieniane na liczbę całkowitą, jest sprawdzenie czy w ogóle podano id, czy użytkownik o takim id istnieje oraz czy zalogowany użytkownik, który chce usunąć znajomego ma w swoich znajomych użytkownika o danym id. Użytkownik o id=2 ma w znajomych uzytkownika o id=4. Jako użytkownika o id=999 dodałem komentarz: "Bla, bla,<IMG src="/profil/znajomi/usun/4"> bla, bla" Następnie zalogowałem się jako użytkownik o id=2 i wszedłem na stronę z tym komentarzem, w skutek czego nie zobaczyłem oczywiście obrazka a z moich znajomych został usunięty użytkownik o id=4 bez mojej wiedzy i zgody - klasyczny przykład ataku CSRF. Wymyśliłem więc sobie, że żeby usunąć użytkownika ze znajomych trzeba to potwierdzić - do czego użyłem ajaxa: Po kliknięciu na linka wyskakuje messagebox z prośbą o potwierdzenie, w przypadku potwierdzenia do funkcji php z funkcji javascript jest przesyłany id użytkownika do usunięcia ze znajomych metodą post, w funkcji php jest sprawdzane czy żądanie przyszło metodą post itd. czego skutkiem jest usunięcie osoby ze znajomych. Po wyłaczeniu w przeglądarce javascripta usunięcie uzytkownika ze znajomych nie jest możliwe, ale: "Bla, bla,<IMG src="/profil/znajomi/usun/4"> bla, bla" już nie działa (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) Czy to wystarczające zabezpieczenie przed atakiem CSRF ? |
|
|
![]()
Post
#171
|
|
Grupa: Zarejestrowani Postów: 690 Pomógł: 81 Dołączył: 6.04.2005 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
nie przeciez zamiast odwolywac sie do adresu /profil/znajomi/usun/4 moge odwolac sie do adresu strony z potwierdzeniem, wlasnie kopiuje na blogaska notke o csrf tak wiec rzuc okiem za jakies 5 - 10 min (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#172
|
|
Grupa: Zarejestrowani Postów: 405 Pomógł: 6 Dołączył: 12.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
bełdzio wielkie dzięki - dzięki Tobie nareszcie zrozumiałem jak zabezpieczać się przed tymi atakami (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Super artykuł.
------------------ @edycja Mam jeszcze pytanie odnośnie ataków CSRF - w przypadku linków usuwających coś z bazy danych wystarczy, że atakujący w komentarzu wpisze np.:
Ofiara po wejściu na tę stronę z takim wpisem usunie nieświadomie coś tam o id=10. W takim wypadku rozumiem doklejanie unikatowego tokena do linku i potem go sprawdzanie. Natomiast nie bardzo rozumiem dodawania do formularza ukrytego pola z tokenem. Co atakujący miałby wpisać żeby ofiara po wejściu na stronę z tym niebezpiecznym wpisem została nieświadomie przekierowana na stronę z formularzem i nieświadomie kliknęła na button typu submit ? To jest chyba niemożliwe w przypadku formularzy ? Ten post edytował nieraczek 24.05.2009, 11:55:13 |
|
|
![]()
Post
#173
|
|
Grupa: Zarejestrowani Postów: 690 Pomógł: 81 Dołączył: 6.04.2005 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
wystarczy ze stworze na swojej stronie formularz z ukrytymi inputami i widocznym przyciskiem "WYgraj 100 000 pln"; user klika na button i na właściwy serwer przesyłane są dane, których autorem jest nasza ofiara (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#174
|
|
Grupa: Zarejestrowani Postów: 405 Pomógł: 6 Dołączył: 12.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
A jak macie formularze, np. żeby było bardziej obrazowo: formularz do wysyłania odpowiedzi na otrzymane prywatne wiadomości:
To te numery - id w action można pozmieniać w dodatku do firefoxa: firebug. Więc po zatwierdzeniu formularza też należy sprawdzać czy dany użytkownik dostał wiadomość o danym id od danej osoby o danym id itd. ? Ten post edytował nieraczek 12.06.2009, 08:47:21 |
|
|
![]()
Post
#175
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Najprostszym zabezpieczeniem przed atakami CSRF jest poprostu dodawanie id sesji i sprawdzanie jej. Np:
|
|
|
![]()
Post
#176
|
|
Grupa: Zarejestrowani Postów: 405 Pomógł: 6 Dołączył: 12.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
Ale nie chodzi mi o ataki csrf tylko ataki wykonane programem firebug, dzięki któremu można dowolnie modyfikować kod html strony i dzięki temu zmieniać ID w akcji formularza, co w konsekwencji mego poprzedniego posta spowoduje wysłanie odpowiedzi do innej osoby niż nadawca danej wiadomości. Inny przykład to jak edytujemy dany post na jakimś forum i w akcji formularza za pomocą firebuga zmienimy ID to w ten sposób moglibyśmy zmodyfikować posta innej osoby jeśli po zatwierdzeniu formularza nie sprawdzimy czy dany użytkownik edytuje swój własny post ufając temu, że akcja formularza nie została zmieniona. Chodzi mi o to, że akcje formularza są tak samo niebezpieczne jak adresy URL i łatwe do modyfikacji programami typu firebug. Rozumie ktoś czy dać przykład ? (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Ten post edytował nieraczek 12.06.2009, 10:16:46 |
|
|
![]()
Post
#177
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Rozumie. Tylko nie widzę pytania... bo na jedyne jakie postawiłeś sam sobie odpowiedziałeś.
|
|
|
![]()
Post
#178
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dopisująć się do Crozina:
@nieraczek, wygląda na to, że gadasz sam ze sobą (IMG:http://forum.php.pl/style_emoticons/default/withstupidsmiley.gif) |
|
|
![]()
Post
#179
|
|
Grupa: Zarejestrowani Postów: 690 Pomógł: 81 Dołączył: 6.04.2005 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
To te numery - id w action można pozmieniać w dodatku do firefoxa: firebug. Więc po zatwierdzeniu formularza też należy sprawdzać czy dany użytkownik dostał wiadomość o danym id od danej osoby o danym id itd. ? jakie są ograniczenia na wysylanie prywatych wiadomosci? bo jesli moge wyslac do kazdego to co za problem czy klikne w jego profilu "napisz wiadomosc" czy sobie zmienie w formie? |
|
|
![]()
Post
#180
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
@bełdzio: A co jak ustawisz ID użytkownika, które nie istnieje? W przypadku gdy masz ustawione klucze obce w tabeli piękny błąd wywali.
Poza tym luki, które nawet potencjalnie są niegroźne powinny być szybko poprawiane. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 10.09.2025 - 19:30 |